package com.gz.tomcat;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class GzTomcatV1 {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8080);
        while(!serverSocket.isClosed()){
            System.out.println("myTomcat在8080端口监听 ...");
            Socket socket = serverSocket.accept();

            //字节流
            //InputStreamReader转换流
            //字节流转成字符流
            InputStream inputStream = socket.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(
                                new InputStreamReader(inputStream, "UTF-8"));
            String s=null;
            while((s=bufferedReader.readLine())!=null){
                //一定要加这句话，否则页面打不开
                //注意:HTTP 请求是以空行作为请求头和请求体分隔以及整个请求结束的标志。
                //当客户端发送完请求后，并不会主动关闭输入流，所以 bufferedReader.readLine() 不会返回 null
                //如果不加这句话会一直在这个while循环出不去，页面打不开
                //注意与那个mytomcat的区别，那个没有读取请求信息(会有空行)，直接读取的hello.html信息
                if(s.length()==0){
                    break;
                }
                System.out.println(s);
            }
            OutputStream outputStream = socket.getOutputStream();
            //构建一个http响应头
            // \r\n表示换行
            //http响应体需要两个换行 \r\n\r\n
            String header="HTTP/1.1 200\r\n" +
                    "Content-Type: text/html;charset=utf-8\r\n\r\n";
            String response=header+"Hi,gz";
            outputStream.write(response.getBytes());

            outputStream.flush();
            outputStream.close();
            bufferedReader.close();
            inputStream.close();
            socket.close();
        }
        
    }
}
